"""
题目需求：实现字符串查找功能，在字符串haystack中找出字符串needle第一次出现的位置。如果needle不是haystack的子串，返回 - 1。
示例：
输入：haystack = "hello", needle = "ll"
输出：2（"ll" 在 "hello" 中从索引 2 开始）
输入：haystack = "aaaaa", needle = "bba"
输出：-1


代码解释：
处理特殊情况：若needle为空字符串，直接返回 0（根据惯例）。
比较两个字符串的长度，若needle更长，返回 - 1。
遍历haystack中所有可能的起始位置（范围为0到len_hay - len_needle）。
对每个起始位置，截取与needle长度相同的子串进行比较，若匹配则返回当前索引。
遍历结束后仍未匹配，返回 - 1。
"""


def str_str(haystack, needle):
    # 特殊情况：needle为空字符串，返回0
    if not needle:
        return 0

    # 获取两个字符串的长度
    len_hay = len(haystack)
    len_needle = len(needle)

    # 如果needle比haystack长，直接返回-1
    if len_needle > len_hay:
        return -1

    # 遍历可能的起始位置
    for i in range(len_hay - len_needle + 1):
        # 检查从i开始的子串是否与needle匹配
        if haystack[i:i + len_needle] == needle:
            return i

    # 未找到匹配的子串
    return -1


# 测试
print(str_str("hello", "ll"))  # 输出: 2
print(str_str("aaaaa", "bba"))  # 输出: -1
print(str_str("abc", ""))  # 输出: 0
